Contact center system

ABSTRACT

A pairing module comprising a memory storing contact center information that i) identifies a first set of available agents that are available to be paired with a contact and ii) identifies a first set of available contacts that are waiting to be paired with an available agent. The pairing module further comprises a contact/agent (C/A) pair selector that functions occasionally read the memory to obtain contact center information and then use the obtained contact center information to pair available agents with available contacts.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part (CIP) of U.S. applicationSer. No. 17/191,028, filed on Mar. 3, 2021 (status pending), which is acontinuation of U.S. application Ser. No. 17/113,715, filed on Dec. 7,2020 (status pending), which is a continuation of U.S. application Ser.No. 16/445,014, filed on Jun. 18, 2019 (now U.S. patent Ser. No.10/863,026, issued on Dec. 8, 2020), which is a continuation of U.S.application Ser. No. 15/395,529, filed on Dec. 30, 2016 (now U.S. patentSer. No. 10/326,882, issued on Jun. 18, 2019). The above identifiedapplications and patents are incorporated by this reference herein intheir entirety.

TECHNICAL FIELD

This disclosure generally relates to pairing contacts and agents incontact centers.

BACKGROUND

A typical contact center algorithmically assigns contacts arriving atthe contact center to agents available to handle those contacts. Attimes, the contact center may have agents available and waiting forassignment to inbound or outbound contacts (e.g., telephone calls,Internet chat sessions, email). At other times, the contact center mayhave contacts waiting in one or more queues for an agent to becomeavailable for assignment.

In some typical contact centers, contacts are assigned to agents basedon time of arrival, and agents receive contacts based on the time whenthose agents became available. This strategy may be referred to as a“first-in, first-out,” “FIFO,” or “round-robin” strategy. In othertypical contact centers, other strategies may be used, such as“performance-based routing,” or a “PBR,” strategy.

Typical contact centers preferentially minimize overall agent idle timeand overall contact waiting time. To that end, if contacts are waitingin a queue, a contact will be assigned to an agent soon after an agentbecomes available for assignment. Similarly, if agents are idle, waitingfor contacts to arrive, an agent will be assigned to a contact soonafter a contact becomes available for assignment.

However, if a contact center uses a pairing strategy that is designed tochoose among multiple possible pairings, it may be inefficient to choosethe first available pairing for the sake of minimizing contact hold timeor agent idle time.

In view of the foregoing, it may be understood that there may be a needfor a system that enables improving the amount of choice available toimprove the efficiency and performance of pairing strategies that aredesigned to choose among multiple possible pairings.

SUMMARY

In one aspect a method is provided. The method includes, at a firsttime, obtaining first contact center information, the first contactcenter information: i) identifying a first set of available agents thatare available to be paired with a contact and ii) identifying a firstset of available contacts that are waiting to be paired with anavailable agent, the first set of available contacts comprising a firstcontact. The method also includes, after obtaining the first contactcenter information, performing a first pairing process using the firstcontact center information. The method also includes, at a second timeafter performing the first pairing process, obtaining second contactcenter information, the second contact center information: i)identifying a second set of available agents that are available to bepaired with a contact, the second set of available agents comprising afirst agent and ii) identifying a second set of available contacts thatare waiting to be paired with an available agent, the second set ofavailable contacts comprising the first contact. The method alsoincludes, after obtaining the second contact center information,performing a second pairing process using the second contact centerinformation, wherein the performance of the second pairing processresults in a pairing of the first contact with the first agent. Themethod also includes, at a third time after performing the secondpairing process, obtaining third contact center information, the thirdcontact center information: i) identifying a third set of availableagents that are available to be paired with a contact and ii)identifying a third set of available contacts that are waiting to bepaired with an available agent. The method also includes after obtainingthe third contact center information, performing a third pairing processusing the third contact center information. The amount of time betweenthe first time and the second time is: i) at least a predeterminedthreshold amount of time, ii) not more than a predetermined maximumamount of time, or iii) both, and the amount of time between the secondtime and the third time is: i) at least the predetermined thresholdamount of time, ii) not more than the predetermined maximum amount oftime, or iii) both.

In another aspect there is provided a system, where the system includesmemory; and processing circuitry coupled to the memory. In someembodiments, the system is configured to, at a first time, obtain firstcontact center information, the first contact center information: i)identifying a first set of available agents that are available to bepaired with a contact and ii) identifying a first set of availablecontacts that are waiting to be paired with an available agent the firstset of available contacts comprising a first contact. The system isfurther configured to, after obtaining the first contact centerinformation, perform a first pairing process, in a switch of the contactcenter, using the first contact center information. The system isfurther configured to, at a second time after performing the firstpairing process, obtain second contact center information, the secondcontact center information: i) identifying a second set of availableagents that are available to be paired with a contact, the second set ofavailable agents comprising a first agent and ii) identifying a secondset of available contacts that are waiting to be paired with anavailable agent, the second set of available contacts comprising thefirst contact. The system is further configured to, after obtaining thesecond contact center information, perform a second pairing process, inthe switch of the contact center, using the second contact centerinformation, wherein the performance of the second pairing processresults in a pairing of the first contact with the first agent. Thesystem is further configured to, at a third time after performing thesecond pairing process, obtain third contact center information, thethird contact center information: i) identifying a third set ofavailable agents that are available to be paired with a contact and ii)identifying a third set of available contacts that are waiting to bepaired with an available agent The system is further configured to,after obtaining the third contact center information, perform a thirdpairing process, in the switch of the contact center, using the thirdcontact center information. The amount of time between the first timeand the second time is: i) at least a predetermined threshold amount oftime, ii) not more than a predetermined maximum amount of time, or iii)both, and the amount of time between the second time and the third timeis: i) at least the predetermined threshold amount of time, ii) not morethan the predetermined maximum amount of time, or iii) both.

In another aspect there is provided a computer program productcomprising a non-transitory computer readable medium storinginstructions which when executed by processing circuitry of a systemcauses the system to perform the above described method.

The present disclosure will now be described in more detail withreference to particular embodiments thereof as shown in the accompanyingdrawings. While the present disclosure is described below with referenceto particular embodiments, it should be understood that the presentdisclosure is not limited thereto. Those of ordinary skill in the arthaving access to the teachings herein will recognize additionalimplementations, modifications, and embodiments, as well as other fieldsof use, which are within the scope as described herein, and with respectto which the present disclosure may be of significant utility.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to facilitate a fuller understanding, reference is now made tothe accompanying drawings, in which like elements are referenced withlike numerals. These drawings should not be construed as limiting thepresent disclosure, but are intended to be illustrative only.

FIG. 1 shows a block diagram of a contact center according toembodiments.

FIG. 2 depicts a schematic representation of a contact center systemtimeline according to embodiments.

FIG. 3 depicts a schematic representation of a choice-based pairingstrategy according to embodiments.

FIG. 4 shows a flow diagram of an L3 pairing method according toembodiments.

FIG. 5 shows a flow diagram of an L3 pairing method according toembodiments.

FIG. 6 shows a flow diagram of an L3 pairing method according toembodiments.

FIG. 7 depicts an L3 pairing module according to embodiments.

FIG. 8A illustrates a state of the memory at a first point in time.

FIG. 8B illustrates a state of the memory at a second point in time.

FIG. 9 shows a flow diagram of a pairing method according toembodiments.

FIG. 10 shows a flow diagram of a pairing method according toembodiments.

DETAILED DESCRIPTION

One example of a pairing strategy that is designed to choose amongmultiple possible pairings is a “behavioral pairing” or “BP” strategy,under which contacts and agents may be deliberately (preferentially)paired in a fashion that enables the assignment of subsequentcontact-agent pairs such that when the benefits of all the assignmentsunder a BP strategy are totaled they may exceed those of FIFO and otherstrategies such as performance-based routing (“PBR”) strategies. BP isdesigned to encourage balanced utilization of agents within a skillqueue while nevertheless simultaneously improving overall contact centerperformance beyond what FIFO or PBR methods will allow. This is aremarkable achievement inasmuch as BP acts on the same calls and sameagents as FIFO and PBR methods, utilizes agents approximately evenly asFIFO provides, and yet improves overall contact center performance. BPis described in, e.g., U.S. Pat. No. 9,300,802, which is incorporated byreference herein. Additional information about these and other featuresregarding pairing or matching modules using BP strategies (sometimesalso referred to as “satisfaction mapping,” “SATMAP,” “routing system,”“routing engine,” etc.) is described in, for example, U.S. Pat. No.8,879,715, which is incorporated herein by reference.

In some embodiments, a contact center may switch (or “cycle”)periodically among at least two different pairing strategies (e.g.,between FIFO and an L3 pairing strategy). Additionally, the outcome ofeach contact-agent interaction may be recorded along with anidentification of which pairing strategy (e.g., FIFO, or BP enabled withL3) had been used to assign that particular contact-agent pair. Bytracking which interactions produced which results, the contact centermay measure the performance attributable to a first strategy (e.g.,FIFO) and the performance attributable to a second strategy (e.g., BPwith L3). In this way, the relative performance of one strategy may bebenchmarked against the other. The contact center may, over many periodsof switching between different pairing strategies, more reliablyattribute performance gain to one strategy or the other. Benchmarkingpairing strategies is described in, e.g., U.S. patent application Ser.No. 15/131,915, filed Apr. 18, 2016, which is incorporated herein byreference.

FIG. 1 shows a block diagram of a contact center system 100 according toembodiments. The description herein describes network elements,computers, and/or components of a system and method for simulatingcontact center systems that may include one or more modules. As usedherein, the term “module” may be understood to refer to computingsoftware, firmware, hardware, and/or various combinations thereof.Modules, however, are not to be interpreted as software which is notimplemented on hardware, firmware, or recorded on a processor readablerecordable storage medium (i.e., modules are not software per se). It isnoted that the modules are exemplary. The modules may be combined,integrated, separated, and/or duplicated to support variousapplications. Also, a function described herein as being performed at aparticular module may be performed at one or more other modules and/orby one or more other devices instead of or in addition to the functionperformed at the particular module. Further, the modules may beimplemented across multiple devices and/or other components local orremote to one another. Additionally, the modules may be moved from onedevice and added to another device, and/or may be included in bothdevices.

As shown in FIG. 1, the contact center system 100 may include a centralswitch 110. The central switch 110 may receive incoming contacts (e.g.,callers) or support outbound connections to contacts via atelecommunications network (not shown). The central switch 110 mayinclude contact routing hardware and software for helping to routecontacts among one or more contact centers, or to one or more PBX/ACDsor other queuing or switching components, including otherInternet-based, cloud-based, or otherwise networked contact-agenthardware or software-based contact center solutions.

The central switch 110 may not be necessary such as if there is only onecontact center, or if there is only one PBX/ACD routing component, inthe contact center system 100. If more than one contact center is partof the contact center system 100, each contact center may include atleast one contact center switch (e.g., contact center switches 120A and120B). The contact center switches 120A and 120B may be communicativelycoupled to the central switch 110. In embodiments, various topologies ofrouting and network components may be configured to implement thecontact center system.

Each contact center switch for each contact center may becommunicatively coupled to a plurality (or “pool”) of agents. Eachcontact center switch may support a certain number of agents (or“seats”) to be logged in at one time. At any given time, a logged-inagent may be available and waiting to be connected to a contact, or thelogged-in agent may be unavailable for any of a number of reasons, suchas being connected to another contact, performing certain post-callfunctions such as logging information about the call, or taking a break.

In the example of FIG. 1, the central switch 110 routes contacts to oneof two contact centers via contact center switch 120A and contact centerswitch 120B, respectively. Each of the contact center switches 120A and120B are shown with two agents each. Agents 130A and 130B may be loggedinto contact center switch 120A, and agents 130C and 130D may be loggedinto contact center switch 120B.

The contact center system 100 may also be communicatively coupled to anintegrated service from, for example, a third party vendor. In theexample of FIG. 1, L3 pairing module 140 may be communicatively coupledto one or more switches in the switch system of the contact centersystem 100, such as central switch 110, contact center switch 120A, orcontact center switch 120B. In some embodiments, switches of the contactcenter system 100 may be communicatively coupled to multiple L3 pairingmodules. In some embodiments, L3 pairing module 140 may be embeddedwithin a component of a contact center system (e.g., embedded in orotherwise integrated with a switch). The L3 pairing module 140 mayreceive information from a switch (e.g., contact center switch 120A)about agents logged into the switch (e.g., agents 130A and 130B) andabout incoming contacts via another switch (e.g., central switch 110)or, in some embodiments, from a network (e.g., the Internet or atelecommunications network) (not shown).

A contact center may include multiple pairing modules (e.g., a BP moduleand a FIFO module) (not shown), and one or more pairing modules may beprovided by one or more different vendors. In some embodiments, one ormore pairing modules may be components of L3 pairing module 140 or oneor more switches such as central switch 110 or contact center switches120A and 120B. In some embodiments, an L3 pairing module may determinewhich pairing module may handle pairing for a particular contact. Forexample, the L3 pairing module may alternate between enabling pairingvia the BP module and enabling pairing with the FIFO module. In otherembodiments, one pairing module (e.g., the BP module) may be configuredto emulate other pairing strategies. For example, an L3 pairing module,or an L3 pairing component integrated with BP components in the BPmodule, may determine whether the BP module may use BP pairing oremulated FIFO pairing for a particular contact. In this case, “BP on”may refer to times when the BP module is applying the BP pairingstrategy, and “BP off” may refer to other times when the BP module isapplying a different pairing strategy (e.g., FIFO).

In some embodiments, regardless of whether pairing strategies arehandled by separate modules, or if some pairing strategies are emulatedwithin a single pairing module, the single pairing module may beconfigured to monitor and store information about pairings made underany or all pairing strategies. For example, a BP module may observe andrecord data about FIFO pairings made by a FIFO module, or the BP modulemay observe and record data about emulated FIFO pairings made by a BPmodule operating in FIFO emulation mode.

FIG. 2 depicts a schematic representation of a contact center systemtimeline according to embodiments. In a given period of time (e.g., overseveral minutes, several hours, a day), the number of agents free oravailable to connect to contacts, or the number of contacts waiting inqueue, will vary continuously as contacts arrive and depart the contactcenter system. The example of FIG. 2 depicts the capacity of a contactcenter system over a period of time along the x-axis from time “0” totime “50” (e.g., 0 minutes to 50 minutes). The y-axis depicts the numberof free agents or the number of contacts in queue above and below thex-axis, respectively.

At time 0 (e.g., when the contact center first opens at the beginning ofthe day), there are 10 agents available and waiting for contacts toarrive. Periods of time when a contact center has a surplus of availableagents are referred to as “L1” environments. If a choice-based pairingstrategy such as BP is used, the choice-based pairing strategy maychoose from among any (or a subset) of the available agents when acontact arrives.

As contacts arrive, and agents become occupied while communicating withthose contacts, the number of available agents may decrease, as shown inFIG. 2 from time 0 to approximately time 5. The contact center isoperating in an L1 environment for this entire duration, but the choiceavailable to BP or another choice-based pairing strategy becomesincreasingly limited—instead of having as many as ten (or more) agentsavailable to choose among, by about time 5 there are only two or threeagents to choose among.

At other periods of time, there may be a shortage of agents, andcontacts begin to queue, waiting for agents to become available forconnection, as shown in FIG. 2 from about time 7 to about time 21.Periods of time when a contact center has a shortage of available agentsare referred to as “L2” environments. If a choice-based pairing strategysuch as BP is used, the choice-based pairing strategy may choose fromamong any (or a subset) of the waiting contacts when an agent becomesavailable.

As agents become available to connect with contacts waiting in thequeue, the size of the queue may decrease, as shown in FIG. 2 fromapproximately time 14 to about time 21. The contact center is operatingin an L2 environment for this entire duration, but the choice availableto BP or another choice-based pairing strategy becomes increasinglylimited—instead of having as many as ten (or more) contacts available tochoose among at about time 14, by about time 21 there are only two orthree contacts in queue to choose among.

At some points in time, a contact center will transition from an L1state to an L2 state (e.g., point 210A at about time 6 and point 210C atabout time 40) or vice versa, from an L2 state to an L1 state (e.g.,point 210B at about time 23). These crossover points along the x-axis(labeled the “1:1” line) occur when no choice is available to BP oranother choice-based pairing strategy. For example, there may be asingle contact waiting in queue, which may be paired with whicheveragent happens to become free next. Or there may be a single agentwaiting idle, which may be paired with whichever contact happens toarrive at the contact center next.

In some situations (not shown), a contact center may reach the “1:1”line and then bounce back up into L1 (or bounce back down into L2). NoL1-to-L2 or L2-to-L1 transition occurs, but there is still a time atwhich no choice is available to BP.

In some situations (not shown), a contact center may remain along the“1:1” line for an extended period of time. In fact, a typical contactcenter may consider this line to indicate when the contact center isoperating at a “perfect” capacity, with neither a surplus nor a shortageof agents for the given level of demand (e.g., number, frequency, andduration of contacts arriving at the contact center). In thesesituations, a BP pairing strategy could go for an extended period oftime with no choices available other than the “1 agent: 1 contact”default choice.

These points in time (or periods of time) when the contact center isoperating along the “1:1” line, when a contact center has neither asurplus nor a shortage of available agents, are referred to as “L0”environments.

FIG. 3 depicts a schematic representation of a choice-based pairingstrategy according to embodiments. When choice is limited, choice-basedpairing strategies may suffer from suboptimal performance. FIG. 3 showsan example of a performance estimate or performance simulation of achoice-based pairing strategy. When there are many contacts in queue(“calls in queue” as in FIG. 3) (e.g., at point 320), or when there aremany agents free (e.g., at point 330), BP or another choice-basedpairing strategy may perform optimally (e.g., at or near “100%” instantperformance or efficiency).

However, as the number of contacts in queue or free agents dwindle,there are fewer choices available to BP, and the performance orefficiency of BP could drop. In an L0 environment (e.g., at point 310),the instant performance or efficiency of BP is considered to be 0%,insofar as BP (without L3 pairing) is incapable of making a choicedifferent from the pairing that any other non-L3 pairing strategy couldmake. In other words, if there is only one contact waiting for an agent,and only one agent waiting a contact, both FIFO and BP will pair thatone contact with that one agent, with no other choice to make. As choiceincreases, either as contacts fill a queue in an L2 environment, or moreagents become available in an L1 environment, performance steadilyincreases toward optimal instant performance.

In the example of FIG. 3, 50 calls in queue and 50 agents free are thepoints 320 and 330 at which this pairing strategy is expected to reachpeak performance. However, in other embodiments or real-world contactcenter systems, peak performance may be reached at varying levels ofagent shortage or surplus (e.g., greater than 3 choices available,greater than 7 choices available, greater than 20 choices available,etc.).

In situations such as L0 environments in which the choice available toBP is too limited, it may be advantageous to delay or otherwise postponeconnecting an agent to a contact. Introducing a delay could allow timefor another agent or another contact to become available. If a contactcenter is operating in L0, and a second agent arrives after the systemdelays the pairing between the first available agent and contact, thecontact center will enter an L1 environment with two agents to choosebetween instead of being forced into the default selection. Similarly,if a contact center is operating in L0, and a second contact arrivesafter the system delays the pairing between the first available agentand contact, the contact center will enter an L2 environment with twocontacts to choose between instead of being forced into the defaultselection.

In some embodiments, it may be desirable to delay even if the contactcenter already has some choice (e.g., already operating in L1 or L2),but the choice is limited. For example, if only ten contacts are waitingin queue when an agent becomes available, the pairing strategy of FIG. 3is expected to have an instant performance of only 60%. It may bedesirable to delay until closer to twenty contacts are waiting, at whichpoint the expected instant performance would be closer to 80%.

When a delay is permitted, it is possible to enter a hybrid environmentthat is neither pure L1 nor pure L2. For example, consider a contactcenter in which there are two contacts in queue, and only one agent isavailable. Following a delay, a second agent could become available,resulting in an environment in which there are multiple contacts inqueue and multiple agents available for connection. Periods of time whena contact center has multiple contacts in queue and multiple free agentsare referred to as “L3” environments. In the present disclosure, an L3pairing module is a pairing module capable of causing and handling L3environments within a contact center system.

FIG. 4 shows a flow diagram of an L3 pairing method 400 according toembodiments. At block 410, a first contact in queue may be identified.In L0 and L1 environments, the first contact may be the only contactwaiting in queue.

At block 420, a first available agent may be identified. In L0 and L2environments, the first available agent may be the only available agent.

At this point, a typical contact center may connect the first contactwith the first agent. If the contact center is using a choice-basedpairing strategy such as BP, this connection may be suboptimal, and thechoice-based pairing strategy will operate at low instant performance orefficiency. Instead, at block 430, the L3 pairing method 400 may waitfor a second contact to arrive or a second agent to become available,thereby increasing the amount of choice available to BP or anotherchoice-based pairing strategy. In some situations, this waiting or delaystep may result in a contact center that is operating in an L3environment.

In some embodiments, the L3 pairing method may wait at block 430 for athreshold amount of time, during which more than one contact may arriveor more than one agent may become available. For example, the thresholdamount of time is predetermined. In other embodiments, the L3 pairingmethod may wait at block 430 for up to a maximum amount of time, afterwhich it makes a connection regardless of whether or how much additionalchoice was made available to the pairing strategy. For example, themaximum amount of time is predetermined.

At block 440, a choice of pairing may be made. In embodiments where thesecond contact has arrived, the first available agent may be preferablypaired with a selected one of at least the first and second contacts. Insituations where the second agent has become available, the firstcontact may be preferably paired with a selected one of at least thefirst and second agents. In situations where there are multiple agentsand multiple contacts (L3), a selected one of at least the first andsecond agent may be preferably paired with a selected one of at leastthe first and second contact.

FIG. 5 shows a flow diagram of an L3 pairing method 500 according toembodiments. L3 pairing method 500 is similar to L3 pairing method 400(FIG. 4) insofar as it uses a delay mechanism to increase choice.However, whereas pairing method 400 can result in an L3 environment,pairing method 500 compels an L3 environment.

At block 510, a first contact may be identified.

At block 520, a first available agent may be identified.

At block 530, L3 pairing method 500 may wait for a second contact toarrive, and, at block 540, L3 pairing method 500 may wait for a secondagent to arrive, resulting in an L3 environment, in which multipleagents and multiple contacts are available for pairing.

At block 550, in some embodiments, a selected one of at least the firstand second contacts may be paired to a selected one of at least thefirst and second agents. In other embodiments, BP may “batch” pairings,such as by pairing both the first agent with one of the first and secondcontacts, and the second agent with the other of the first and secondcontacts. In this way, BP may make multiple high-performance/efficiencypairings at once without further delay. In some embodiments, the contactcenter system may be able to effect each of these pairings/connectionssimultaneously, or nearly simultaneously, such as by a single batchinstruction from an L3 pairing module. In other embodiments, the L3pairing module may serialize multiple pairing/connection instructions toeffect each of these multiple pairings. The serialized instructions maybe made nearly simultaneously such that there is no delay or onlyminimal delay between routing one connection and the next.

For example, block 550 may provide for pairing the first contact and thefirst agent, even after L3 pairing method 500 waited for a secondcontact to arrive, and, at block 540, L3 pairing method 500 waited for asecond agent to arrive. Whereas conventional contact centers wouldconsider delaying a possible pairing of the first agent and the firstcontact to be a waste of contact center resources, the presentdisclosure provides greater assurance in the accuracy of each selectedpairing.

In some embodiments, L3 pairing method 400 described above with respectto FIG. 4 may also be configured to perform batch pairings in situationsin which an L3 environment arises.

It is possible for L3 environments to arise without introducing a delayor postponing selecting/choosing a pairing. For example, two or moreagents may become available simultaneously or nearly simultaneously whenthere are multiple contacts in queue, resulting in a transition from L2to L3. Similarly, two or more contacts may arrive simultaneously ornearly simultaneously, resulting in a transition from L1 to L3. In somecontact center systems, the workforce may be instantaneously increased.For example, if there are many contacts waiting in queue, the contactcenter may modify the pool of logged-in agents to add more than oneagent to the pool. Each of these newly-added agents would be availablesimultaneously or nearly simultaneously, resulting in a transition fromL2 to L3.

FIG. 6 shows a flow diagram of an L3 pairing method 600 according toembodiments. At block 610, a plurality of contacts waiting in queue forassignment may be identified. At block 620, a plurality of agentsavailable for assignment to any (or at least some) of the plurality ofcontacts may be identified.

Consequently, the contact center is currently in an L3 environment,regardless of whether it was achieved through a delay technique or othercircumstances that gave rise to L3. At block 630, in some embodiments,one of the plurality of agents may be paired with one of the pluralityof contacts that was not the earliest contact to arrive. In someembodiments, the L3 pairing method 600 may batch-pair multiple agentswith multiple contacts, and, in some situations, it may be the case thatnone of the preferentially paired contacts was the earliest contact toarrive.

Similarly, in some embodiments, one of the plurality of contacts may bepaired with one of the plurality of agents that was not thelongest-waiting agent (or best-performing agent) that would have beenselected according to a FIFO-based fairness metric (or PBR strategy). Insome embodiments, the L3 pairing method 600 may batch-pair multiplecontacts with multiple agents, and, in some situations, it may be thecase none of the preferentially paired agents was the longest-waitingagent (or best-performing agent, etc.).

It is possible for an L3 pairing module to perform or otherwise emulatea FIFO or FIFO-like pairing strategy while the contact center system isan L3 state. In these situations, the L3 pairing module may always pair,for example, the longest-waiting contact (or the higher-prioritycontact) at the head of the queue with, for example, the longest-waitingagent, regardless of the other contacts in queue and available agents.In this sense, a FIFO pairing strategy is indifferent to L1 (agentsurplus), L2 (agent shortage), and L3 (multiple agents and multiplecontacts) environments, operating no more or less efficiently as in anL0 state. However, an L3-enabled choice-based pairing strategy such asBP with L3 can operate at higher average performance/efficiency whenL1/L2/L3 states with increased choice are possible.

In some embodiments, an L3 pairing module (e.g., L3 pairing module 140)or a similar module may be capable of making an automated workforcemanagement recommendation or decision within the contact center system.For example, instead of preferentially trying to minimize contact holdtime and agent free time, which causes the contact center to hoveraround L0 or in periods of L1 and L2 with limited amounts of choice, thecontact center system could be advised or instructed to use a certainnumber of agents that is likely to keep the contact center system inhigh-choice environments. In some situations, the recommendation couldbe to staff additional agents (e.g., 10 additional agents, 100additional agents, etc.) to increase the expected amount of time spentin high-choice L1. In other situations, the recommendation could be tostaff fewer agents (e.g., 10 fewer agents, 100 fewer agents, etc.) toincrease the expected amount of time spent in high-choice L2.

In some embodiments, the workforce management instruction orrecommendation may balance the cost of employing additional agents andincreasing agent free time against the benefit of reducing contact waittime, or balancing the cost-savings of employing fewer agents anddecreasing agent free time against the cost of increasing contact waittime. These recommendations may take into account the desired metric tooptimize. For example, if the contact center management desires tooptimize customer satisfaction, it may desirable to make arecommendation that errs on being in high-choice L1 (agent surplus)rather than high-choice L2 (agent shortage). In either case, therecommendation or instruction may balance the cost of increasing agentfree time or increasing contact wait time against the improvedperformance/efficiency of BP or another choice-based pairing strategyoperating in higher-choice L1, L2, or L3 environments, and avoidinginefficient L0 environments in which only a default choice is available.

FIG. 7 illustrates an example L3 pairing module 700 according to anembodiment (that is, for example, L3 pairing module 140 may beimplemented using pairing module 700). In the embodiment shown, pairingmodule 700 includes a memory 710 (e.g., random access memory RAM) suchas dynamic RAM (DRAM) or static RAM (SRAM)) for storing contact centerinformation that identifies: (i) a set of contact identifiers (IDs)associated with contacts available for pairing (i.e., contacts waitingto be connected to an agent) and (ii) a set of agent IDs associated withagents available for pairing. The sets of IDs are “dynamic” because eachset may change over time, as discussed herein. In some embodiments, thecontact center information includes: i) for each contact ID, metadatafor the contact associated with the contact ID (this metadata mayinclude state information indicating whether the contact is available(i.e., waiting to be paired), a score assigned to the contact, and/orinformation about the contact) and ii) for each agent ID, metadata forthe agent associated with the agent ID (this metadata may include stateinformation indicating whether the agent is available, a score assignedto the agent and/or information about the agent). Exemplary informationabout the contacts and/or agents that may be stored in memory 710 and isassociated with the contact ID or agent ID includes: attributes, arrivaltime, hold time or other duration data, estimated wait time, historicalcontact-agent interaction data, agent percentiles, contact percentiles,a state (e.g., ‘available’ when a contact or agent is waiting for apairing, ‘abandoned’ when a contact disconnects from the contact center,‘connected’ when a contact is connected to an agent or an agent isconnected to a contact, ‘completed’ when a contact has completed aninteraction with an agent, ‘unavailable’ when an agent disconnects fromthe contact center) and patterns associated with the agents and/orcontacts.

Pairing module 700 also includes a contact detector 702 and an agentdetector 704. Contact detector 702 is operable to detect an availablecontact (e.g., contact detector 702 may be in communication with aswitch that signals contact detector 702 whenever a new contact callsthe contact center) and, in immediate response to detecting theavailable contact, store in memory 710 at least a contact ID associatedwith the detected contact (the metadata described above may also bestored in association with the contact ID). Similarly, agent detector704 is operable to detect when an agent becomes available and, inimmediate response to detecting the agent becoming available, store inmemory 710 at least an agent identifier uniquely associated with thedetected agent (metadata pertaining to the identified agent may also bestored in association with the agent ID). In this way, as soon as acontact/agent becomes available, memory 710 will be updated to includethe corresponding contact/agent identifier and state informationindicating that the contact/agent is available. Hence, at any givenpoint in time, memory 710 will contain a set of zero or more contactidentifiers where each is associated with a different contact waiting tobe connected to an agent, and a set of zero or more agent identifierswhere each is associated with a different available agent. Pairingmodule 700 further includes (i) a contact/agent (C/A) batch selector 720that functions to identify (e.g., based on the state information) setsof available contacts and agents for pairing, and provide state updates(i.e., modify the state information) for contacts and agents once thecontacts and agents are selected for pairing and (ii) a C/A pairingevaluator 721 that functions to evaluate information associated withavailable contacts and information associated with available agents inorder to propose contact-agent pairings. As shown in FIG. 7, C/A batchselector 720 is in communication with memory 710, and, thereby, can readfrom memory 710 the contact center information stored therein (e.g., aset of contact IDs where each contact ID identifies an available contactand a set of agent IDs where each agent ID identifies an availableagent). In one embodiment, C/A batch selector 720 is configured tooccasionally (e.g., periodically) read memory 710 to obtain a list ofavailable contacts and available agents based on a state associated withthe agents and contacts listed in the memory 710. Further, the C/A batchselector 720 is in contact with a C/A pairing evaluator 721, and, afterobtaining a list of available contacts and available agents, the C/Abatch selector 720 may send the list to the C/A pairing evaluator 721(e.g., sending contact IDs and agent IDs to the C/A pairing evaluator721).

After the C/A pairing evaluator 721 receives a set of contact IDs andagent IDs from the C/A batch selector 720, the C/A pairing evaluator 721may read from memory 710 further information about the received contactIDs and agent IDs. The C/A pairing evaluator 721 uses the readinformation in order to identify and propose agent-contact pairings forthe received contact IDs and agent IDs based on a pairing strategy,which, depending on the pairing strategy used and the available contactsand agents, may result in no contact/agent pairings, a singlecontact/agent pairing, or a plurality of contact agent pairings.

Upon identifying contact/agent pairing(s), the C/A pairing evaluator 721sends the set of contact/agent pairing(s) to the batch selector 720. TheC/A batch selector 720 provides the set of contact/agent pairing(s) to acontact/agent connector 722 (e.g., if the contact associated withcontact ID C12 is paired with the agent associated with the agent ID A7,then C/A batch selector 720 provides these contact/agent IDs tocontact/agent connector 722). If the pairing process results in one ormore contact/agent pairings, then, for each contact/agent pairing, C/Abatch selector 720 will transmits an updated state associated with eachcontact ID and each agent ID in the one or more contact/agent pairingsto memory 710, which is then associated with each contact ID and agentID. Thereby, memory 710 retains the contact IDs and agent IDs for futureanalysis.

Contact/agent connector 722 functions to connect the identified agentwith the paired identified contact. Further, C/A connector 722 transmitsan updated state associated with each contact ID and each agent ID inthe one or more contact/agent pairings to memory 710, which is thenassociated with each contact ID and agent ID.

Therefore, the pairing module 700 provides an asynchronous pollingprocess where memory 710 provides a central repository that is read andupdated by the contact detector 702, agent detector 704, C/A batchselector 720, C/A pairing evaluator 721, and C/A connector 722.Accordingly, the objects of each agent and contact do not move betweenthe components of pairing module 700; instead identifiers associatedwith the objects are transmitted between the contact detector 702, agentdetector 704, memory 710, C/A batch selector 720, C/A pairing evaluator721, and C/A connector 722. This process conserves bandwidth, processingpower, memory associated with each module, and is more expedient thanconventional event-based pairing modules.

This feature is illustrated by comparing FIG. 8A with FIG. 8B. FIG. 8Ashows the state of memory 710 at time t=t1 according to an embodiment,and FIG. 8B shows the state of memory 710 at time t=t4 according to theembodiment. At time t=t1, C/A batch selector 720 reads memory andobtains a set of contact IDs (C1, C2, C3) where each contact ID isassociated with an available contact and a set of agent IDs (A1, A2, A3)where each agent ID is associated with an available agent, and thenprovides the set of contact IDs and agent IDs to C/A pairing evaluator721 (or “evaluator” 721 for short). C/A batch selector is able todetermine whether a contact ID is associated with an available contactby inspecting the availability-flag (AF) associated with the contact ID(e.g., when AF=1, the contact is available, otherwise the contact is notavailable). Similarly, C/A batch selector is able to determine whetheran agent ID is associated with an available agent by inspecting the AFassociated with the agent ID (e.g., when AF=1, the agent is available,otherwise the agent is not available). In this example, after obtainingthe contact/agent IDs (e.g., at time t=t2), evaluator 721 decides topair contact C1 with agent A3 and provides the tuple (C1, A3) to C/Aconnector 722, via C/A batch selector 720, to effectuate the pairing.C/A connector 722 transmits an updated state to memory 710 for C1 and A3(e.g., changes the corresponding availability-flags to 0). Therefore,when C/A batch selector 720 next (e.g., at time t=t3) polls memory, C1and A3 will not be available, and therefore will not be included in theset of contact IDs and the set of agent IDs provided to the C/A pairingevaluator 721. Also at time t=t3, contact detector 702 adds ID C4 tomemory 710 and agent detector 704 adds ID A4 to memory 710. Accordingly,at time t=t4 memory 710 includes the following contact IDs: C1, C2, C3,and C4 along with their corresponding availability flags and thefollowing agent IDs: A1, A2, A3, A4 along with their correspondingavailability flags. As illustrated by FIG. 8A and FIG. 8B, the systemstores contact information (e.g., contact ID and associated AF) thatidentifies a set of available contact and agent information (e.g., agentID and associated AF) that identifies a set of available agents.

In one embodiment, C/A batch selector 720 is configured such that, ifC/A batch selector 720 reads memory at time t=t1, then C/A batchselector 720 will not read memory again until at least a first thresholdamount of time (th1) has passed since time t=t1, but will read memoryagain by no later than time t=t1+th2, where th2>th1. For example, th1 ispredetermined. That is, in some embodiments, when C/A batch selector 720reads memory at time t=tx, C/A batch selector 720 will read the memoryat some point in time between and including tx+th1 and tx+th2.

The tables below illustrate various possible scenarios of a contactcenter operating according to various embodiments of the presentdisclosure. These tables demonstrate various combinations of differentpairing strategies, and different contact center states (e.g., L1, L2,L3). The present disclosure contemplates any possible combination ofcontact center states and pairing strategies. That is, when an L1scenario is illustrated by a Table, the present disclosure contemplatesa similar scenario with an L2 scenario (or L3 scenario) instead.Similarly, when an agent becomes available, the present disclosurecontemplates another scenario where a contact becomes available, andvice versa.

TABLE 1 Time Available Contacts/Agents Events t1 A1, A2 t2 A1, A2 t3 A1,A2 Read memory (e.g., obtain A1, A2) t4 A1, A2, C1 Perform Pairingprocess. Result: no pairings t5 A1, A2, C1 t6 A1, A2, C1, A3 t7 A1, A2,C1, A3 Read memory t8 A1, A2, C1, A3, A4 Perform Pairing process.Result: A3/C1 paired Transmit updated A3/C1 state t9 A1, A2, A4 t10 A1,A2, A4, C2, A5 t11 A1, A2, A4, C2, A5, A6 Read memory t12 A1, A2, A4,C2, A5, A6, C9 Perform Pairing process. Result: A2/C2 paired. Transmitupdated A2/C2 state. t13 A1, A4, A5, A6, C9

The scenario illustrated in Table 1 is an L1 scenario as there is alwaysa surplus of agents. As shown in the table, while C1 became available attime t=t4, C1 was not paired with an available agent until time t=t8because evaluator 721 did not have knowledge that C1 was available untilselector 720 read memory 710 again at time t=t7. Evaluator 721 may haveused any pairing strategy (e.g., BP, FIFO, or PBR).

TABLE 2 Time Available Contacts/Agents Events t1 A1, A2 t2 A1, A2, C1 t3A1, A2, C1 Read memory (i.e., obtain A1, A2, C1) t4 A1, A2, C1 PerformPairing process. Result: no pairings (e.g., not enough agent choice) t5A1, A2, C1 t6 A1, A2, C1, A3, A4 t7 A1, A2, C1, A3, A4 Read memory(i.e., obtain A1, A2, A3, A4, C1) t8 A1, A2, C1, A3, A4 Perform Pairingprocess. Result: A1/C1 paired Transmit updated A1/C1 state t9 A2, A3,A4, C2 t10 A2, A3, A4, C2 t11 A2, A3, A4, C2 Read memory t12 A2, A3, A4,C2, A5 Perform Pairing process. Result: A2/C2 paired Transmit updatedA2/C2 state

The scenario illustrated in Table 2 is an L1 scenario as there is alwaysa surplus of agents. As shown in the table, while C1 became available attime t=t2, C1 was not paired with an available agent until time t=t8because evaluator 721 decided there was not enough agent choice.Notably, at time t=t12, evaluator 721 decides to pair A2/C2 becauseevaluator 721 determined that there was sufficient choice; for example,evaluator 721 may check for a threshold amount of choice (e.g., athreshold number of potential pairings). That is, a potential pairingthat was available to evaluator 721 at an earlier time t=t2, may not beselected until a later time t=t8.

In this scenario, the pairing strategy may have been BP, but notconventional pairing strategies such as FIFO or PBR, which typicallyrequire pairings to be made as soon as any pairing is available.

TABLE 3 Time Available Contacts/Agents Events t1 A1 t2 A1, A2 t3 A1, A2Read memory (e.g., obtain A1, A2) t4 A1, A2, C1 Perform Pairing process.Result: no pairings t5 A1, A2, C1 t6 A1, A2, C1, A3, A4 t7 A1, A2, C1,A3, A4 Read memory t8 A1, A2, C1, A3, A4 Perform Pairing process.Result: A1/C1 paired Transmit updated A1/C1 state t9 A2, A3, A4 t10 A2,A3, A4, C2, A5 t11 A2, A3, A4, C2, A5 Read memory t12 A1, A2, A4, C2,A5, A6, C9 Perform Pairing process. Result: A2/C2 paired. Transmitupdated A2/C2 state. t13 A3, A4, A5, A6, C9

The scenario illustrated in Table 3 is an L1 scenario as there is alwaysa surplus of agents. As shown in the table, while C1 became available attime t=t4, C1 was not paired with an available agent until time t=t8. Inthis scenario, the pairing strategy may have been FIFO.

TABLE 4 Time Available Contacts/Agents Events t1 C1, C2 t2 C1, C2 t3 C1,C2 Read memory (e.g., obtain C1, C2) t4 C1, C2, A1 Perform Pairingprocess. Result: no pairings t5 C1, C2, A1 t6 C1, C2, A1, C3 t7 C1, C2,A1, C3 Read memory t8 C1, C2, A1, C3, C4 Perform Pairing process.Result: C3/A1 paired Transmit updated C3/A1 state t9 C1, C2, C4 t10 C1,C2, C4, A2, C5 t11 C1, C2, C4, A2, C5, C6 Read memory t12 C1, C2, C4,A2, C5, C6, A9 Perform Pairing process. Result: C2/A2 paired. Transmitupdated C2/A2 state. t13 C1, C4, C5, C6, A9

The scenario illustrated in Table 4 is an L2 scenario as there is alwaysa surplus of contacts. As shown in the table, while A1 became availableat time t=t4, A1 was not paired with an available agent until time t=t8because evaluator 721 did not have knowledge that A1 was available untilselector 720 read memory 710 again at time t=t7. Evaluator 721 may haveused any pairing strategy (e.g., BP, FIFO, or PBR).

TABLE 5 Time Available Contacts/Agents Events t1 C1, C2 t2 C1, C2, A1 t3C1, C2, A1 Read memory (i.e., obtain C1, C2, A1) t4 C1, C2, A1 PerformPairing process. Result: no pairings (e.g., not enough agent choice) t5C1, C2, A1 t6 C1, C2, A1, C3, C4 t7 C1, C2, A1, C3, C4 Read memory(i.e., obtain C1, C2, C3, C4, A1) t8 C1, C2, A1, C3, C4 Perform Pairingprocess. Result: C1/A1 paired Transmit updated C1/A1 state t9 C2, C3,C4, A2 t10 C2, C3, C4, A2 t11 C2, C3, C4, A2 Read memory t12 C2, C3, C4,A2, C5 Perform Pairing process. Result: C3/A2 paired Transmit updatedC3/A2 state

The scenario illustrated in Table 5 is an L2 scenario as there is alwaysa surplus of contacts. As shown in the table, while A1 became availableat time t=t2, A1 was not paired with an available contact until timet=t8 because evaluator 721 decided there was not enough contact choice.In this scenario, the pairing strategy may have been BP, but not FIFO orPBR.

TABLE 6 Time Available Contacts/Agents Events t1 C1 t2 C1, C2 t3 C1, C2Read memory (e.g., obtain C1, C2) t4 C1, C2, A1 Perform Pairing process.Result: no pairings t5 C1, C2, A1 t6 C1, C2, A1, C3, C4 t7 C1, C2, A1,C3, C4 Read memory t8 C1, C2, A1, C3, C4 Perform Pairing process.Result: C1/A1 paired Transmit updated C1/A1 state t9 C2, C3, C4 t10 C2,C3, C4, A2, C5 t11 C2, C3, C4, A2, C5 Read memory t12 C1, C2, C4, A2,C5, C6, A9 Perform Pairing process. Result: C2/A2 paired. Transmitupdated C2/A2 state. t13 C3, C4, C5, C6, A9

The scenario illustrated in Table 6 is an L2 scenario as there is alwaysa surplus of contacts. As shown in the table, while A1 became availableat time t=t4, A1 was not paired with an available agent until time t=t8.In this scenario, the pairing strategy may have been any pairingstrategy (e.g., BP, FIFO, or PBR).

TABLE 7 Time Available Contacts/Agents Events t1 A1, A2 Read memory(e.g., obtain A1, A2) t2 A1, A2 Perform Pairing process. Result: nopairings t3 A1, A2, C1, C2 t4 A1, A2, C1, C2, C3, C4, C5 Read memory(e.g., obtain A1, A2, C1-C5) t5 A1, A2, C1, C2, C3, C4, C5 PerformPairing process. Result: A1/C5 and A2/C3 and transmit updated states forA1, A2, C3, C5 t6 A3, A4, C1, C2, C4, C6 t7 A3, A4, C1, C2, C4, C6 Readmemory t8 A3, A4, C1, C2, C4, C6 Perform Pairing process. Result: C2/A4paired Transmit updated C2/A4 state t9 A3, C1, C4, C6 t10 A3, A1, C1,C4, C6, C7 t11 A3, A1, C1, C4, C6, C7 Read memory t12 A3, A1, A2, C1,C4, C6, C7, Perform Pairing process. Result: C1/A2 paired. C8 Transmitupdated C1/A2 state. t13 A3, A1, C4, C6, C7, C8

The scenario illustrated in Table 7 is an L3 scenario in which BP or PBRmay have been the pairing strategy.

TABLE 8 Time Available Contacts/Agents Events t1 A1, A2, C1, C2 Readmemory (i.e., obtain A1, A2, C1, C2) t2 A1, A2, C1, C2 Perform Pairingprocess. Result: no pairings (e.g., not enough agent choice) t3 A1, A2,A3, A4, C1, C2, C3, C4 t4 A1, A2, A3, A4, C1, C2, C3, C4 Read memory t5A1, A2, A3, A4, C1, C2, C3, C4 Perform pairing process. Result A1/C2,A2/C3. Transmit updated states for A1, A2, C2, C3 t6 A3, A4, A5, A6, C1,C4, C5, C6 t7 A3, A4, A5, A6, C1, C4, C5, C6 Read memory t8 A3, A4, A5,A6, C1, C4, C5, C6 Perform Pairing process. Result: A3/C1, A4/C4, A5/C6paired Transmit updated states for A3, A4, A5, C4, C6 t9 A6, A7, C5, C7t10 A6, A7, C5, C7 Read memory (i.e. obtain A6, A7, C5, C7) t11 A2, A6,A7, A8, A9, C5, C7, C8, Perform Pairing process. Result: no pairing(e.g., C9 not enough agent choice because only two agents A6 and A7 wereread from memory) t12 A2, A6, A7, A8, A9, C5, C7, C8, C9

The scenario illustrated in Table 8 is an L3 scenario. In this scenario,the pairing strategy may have been BP, but not FIFO or PBR.

TABLE 9 Time Available Contacts/Agents Events t1 A1, A2, C1, C2 Readmemory (i.e., obtain A1, A2, C1, C2) t2 A1, A2, C1, C2, A3, C3 PerformPairing process. Result: A1/C1 and A2/C2. Transmit updated states forA1, A2, C1, C2 t3 A3, C3 t4 A3, C3 Read memory t5 A3, C3, A4, C4 Performpairing process. Result A3/C3. Transmit updated states for A3, C3. t6A4, C4, A5, C5 t7 A4, C4, A5, C5 Read memory t8 A4, C4, A5, C5, A6, C6Perform Pairing process. Result: A4/C4, A5/C5. Transmit updated statesfor A4, A5, A5, C4, C5 t9 A6, C6

The scenario illustrated in Table 9 is an L3 scenario. In this scenario,the pairing strategy may have been FIFO or any other pairing strategy.

TABLE 10 Time Available Contacts/Agents Events t1 C1, C2 Read memory(i.e., obtain C1, C2) t2 A1, A2, C1, C2, A3, C3 Perform Pairing process.Result: No Pairing t3 A1, A2, C1, C2, A3, C3 t4 A1, A2, C1, C2, A3, C3,C4, C5 Read memory t5 A1, A2, C1, C2, A3, C3, C4, C5, Perform pairingprocess. Result A2/C3. C6 Transmit updated states for A2, C3. t6 A1, C1,C2, C3, C4, C5, C6, A3, C7 t7 A1, C1, C2, C3, C4, C5, C6, A3, Readmemory C7, C8 t8 A1, C1, C2, C3, C4, C5, C6, A3, Perform Pairingprocess. Result: A1/C4, A3/C5. C7, C8, C9 Transmit updated states forA1, A3, C4, C5 t9 C1, C2, C3, C6, C7, C8, C9

In this scenario, at time t0 the contact center was in L2 state, butthen moved to L3 state by time t2. The pairing strategy may have beenBP.

TABLE 11 Time Available Contacts/Agents Events t1 C1, C2, A1 Read memory(i.e., obtain C1, C2) t2 A2, C2, A3, C3 Perform Pairing process. Result:A1/C1. Transmit updated states for A1, C1. t3 A2, C2, A3, C3 t4 A2, C2,A3, C3, C4, C5 Read memory t5 A2, C2, A3, C3, C4, C5, C6 Perform pairingprocess. Result: A2/C2, A3/C4. Transmit updated states for A2, A3, C2,C4. t6 C3, C5, C6, A4, C7, t7 C3, C4, C5, C6, A4, C7, C8 Read memory t8C3, C4, C5, C6, A4, C7, C8, C9 Perform Pairing process. Result: A4/C5.Transmit updated states for A3, C5 t9 C3, C4, C6, C7, C8, C9

In this scenario, at time t0 the contact center was in L2 state, butthen moved to L3 state by time t2. The contact center returns to an L2state at t=t6. At every pairing process, all available agents are pairedwith a contact.

FIG. 9 is a flowchart illustrating a process 900 according to anembodiment.

Process 900 may begin in step s902.

Step s902 comprises, at a first time, obtaining first contact centerinformation (e.g., obtaining from memory 710 the set of contact IDs andthe set of agent IDs), where the first contact center informationidentifies i) a first set of available agents that are available to bepaired with a contact (this could be an empty set—i.e., no agents areavailable) and ii) a first set of available contacts that are waiting tobe paired with an available agent, the first set of available contactscomprising a first contact.

Step s904 comprises, after obtaining the first contact centerinformation, performing a first pairing process (e.g., BP, FIFO, PBR)using the first contact center information.

Step s906 comprises, at a second time after performing the first pairingprocess, obtaining second contact center information, the second contactcenter information: i) identifying a second set of available agents thatare available to be paired with a contact, the second set of availableagents comprising a first agent and ii) identifying a second set ofavailable contacts that are waiting to be paired with an availableagent, the second set of available contacts comprising the firstcontact.

Step s908 comprises, after obtaining the second contact centerinformation, performing a second pairing process (e.g., BP, FIFO, PBR)using the second contact center information, wherein the performance ofthe second pairing process results in a pairing of the first contactwith the first agent. This second pairing process may use the samepairing strategy as the first pairing process or the second pairingprocess may use a different pairing strategy. For example, step s904 mayuse FIFO, while step s908 uses BP. In another example, step s904 may useBP with a first percentile ranking, while step s908 uses BP with asecond percentile ranking, different from the first percentile ranking.In another example, step s904 may use a diagonal method BP pairingstrategy, while step s908 uses an off-diagonal, or network flow, BPpairing strategy.

Step s910 comprises, at a third time after performing the second pairingprocess, obtaining third contact center information, the third contactcenter information: i) identifying a third set of available agents thatare available to be paired with a contact and ii) identifying a thirdset of available contacts that are waiting to be paired with anavailable agent.

Step s912 comprises, after obtaining the third contact centerinformation, performing a third pairing process using the third contactcenter information.

The amount of time between the first time and the second time is: i) atleast a predetermined threshold amount of time, ii) not more than apredetermined maximum amount of time, or iii) both, and the amount oftime between the second time and the third time is: i) at least thepredetermined threshold amount of time, ii) not more than thepredetermined maximum amount of time, or iii) both.

In some embodiments, the first set of available agents comprises thefirst agent.

In some embodiments, the second set of available contacts comprises thefirst contact and a second contact.

In some embodiments, the first contact became available for pairingcloser to the first time than the second time.

In some embodiments, the predetermined threshold amount of time or thepredetermined maximum amount of time is based on at least one of: i) thetotal number of agents included in the first set of available agents orii) the total number of contacts included in the first set of availablecontacts.

In some embodiments, pairing the first contact to the first agent occursat a fourth time between the second time and the third time.

In some embodiments, pairing the first contact to the first agent occursat a fourth time after the third time.

FIG. 10 is a flowchart illustrating a process 1000 according to anembodiment.

Process 1000 may being in step s1002.

Step s1002 comprises storing agent information that identifies a set ofagent IDs, each agent ID included in the set of agent IDs beingassociated with a different available agent.

Step s1004 comprises storing contact information that identifies a setof contact IDs, each contact ID included in the set of contact IDs beingassociated with a different contact waiting to be connected with anavailable agent.

Step s1006 comprises performing a pairing process that uses the set ofagent IDs and the set of client IDs to attempt to pair at least a firstwaiting contact with an available agent.

Step s1008 comprises, after performing the pairing process, determiningwhether at least a threshold amount of time has elapsed since a point intime prior to the completion of the performance of the pairing process.

Step s1010 comprises, as a result of determining that at least thethreshold amount of time has elapsed since the point in time, performingthe pairing process again.

In some embodiments, the system is further configured such that, if, asa result of the pairing process a particular contact is paired with aparticular agent, then, prior to performing the paring process again,the system i) updates the state of the agent ID associated with theparticular agent and ii) updates the state of the client ID associatedwith the particular client.

In some embodiments, the pairing process comprises: selecting a contactID from the set of contact IDs and choosing one of the agent IDs basedinformation associated with the selected contact ID.

In some embodiments, the information associated with the selectedcontact ID is a numeric value, each agent ID included in the set ofagent IDs is associated with a numeric value, and choosing one of theagent IDs based on the numeric value associated with the selectedcontact ID comprises choosing, from among the set of agent IDs, theagent ID having a numeric value that is the closest to the numeric valueassociated with the contact ID.

In some embodiments, the pairing process comprises selecting an agent IDfrom the set of agent IDs and choosing one of the contact IDs basedinformation associated with the selected agent ID.

At this point it should be noted that L3 pairing in a contact centersystem in accordance with the present disclosure as described above mayinvolve the processing of input data and the generation of output datato some extent. This input data processing and output data generationmay be implemented in hardware or software. For example, specificelectronic components may be employed in an L3 pairing module or similaror related circuitry for implementing the functions associated with L3pairing in a contact center system in accordance with the presentdisclosure as described above. Alternatively, one or more processorsoperating in accordance with instructions may implement the functionsassociated with BP in a contact center system in accordance with thepresent disclosure as described above. If such is the case, it is withinthe scope that such instructions may be stored on one or morenon-transitory processor readable storage media (e.g., a magnetic diskor other storage medium), or transmitted to one or more processors viaone or more signals embodied in one or more carrier waves.

The present disclosure is not to be limited in scope by the specificembodiments described herein. Indeed, other various embodiments of andmodifications to the present disclosure, in addition to those describedherein, will be apparent to those of ordinary skill in the art from theforegoing description and accompanying drawings. Thus, such otherembodiments and modifications are intended to fall within the scope.Further, although the present disclosure has been described herein inthe context of at least one particular implementation in at least oneparticular environment for at least one particular purpose, those ofordinary skill in the art will recognize that its usefulness is notlimited thereto and that the present disclosure may be beneficiallyimplemented in any number of environments for any number of purposes.Accordingly, the claims set forth below should be construed in view ofthe full breadth and spirit as described herein.

1. A method comprising: at a first time, obtaining first contact centerinformation, the first contact center information: i) identifying afirst set of available agents that are available to be paired with acontact and ii) identifying a first set of available contacts that arewaiting to be paired with an available agent, the first set of availablecontacts comprising a first contact; after obtaining the first contactcenter information, performing a first pairing process using the firstcontact center information; at a second time after performing the firstpairing process, obtaining second contact center information, the secondcontact center information: i) identifying a second set of availableagents that are available to be paired with a contact, the second set ofavailable agents comprising a first agent and ii) identifying a secondset of available contacts that are waiting to be paired with anavailable agent, the second set of available contacts comprising thefirst contact; after obtaining the second contact center information,performing a second pairing process using the second contact centerinformation, wherein the performance of the second pairing processresults in a pairing of the first contact with the first agent; at athird time after performing the second pairing process, obtaining thirdcontact center information, the third contact center information: i)identifying a third set of available agents that are available to bepaired with a contact and ii) identifying a third set of availablecontacts that are waiting to be paired with an available agent; andafter obtaining the third contact center information, performing a thirdpairing process using the third contact center information, wherein theamount of time between the first time and the second time is: i) atleast a predetermined threshold amount of time, ii) not more than apredetermined maximum amount of time, or iii) both, and the amount oftime between the second time and the third time is: i) at least thepredetermined threshold amount of time, ii) not more than thepredetermined maximum amount of time, or iii) both.
 2. The method ofclaim 1, wherein the first set of available agents comprises the firstagent.
 3. The method of claim 1, wherein the second set of availablecontacts comprises the first contact and a second contact.
 4. The methodof claim 1, wherein the first contact became available for pairingcloser to the first time than the second time.
 5. The method of claim 1,wherein the predetermined threshold amount of time or the predeterminedmaximum amount of time is based on at least one of: i) the total numberof agents included in the first set of available agents or ii) the totalnumber of contacts included in the first set of available contacts. 6.The method of claim 1, wherein pairing the first contact to the firstagent occurs at a fourth time between the second time and the thirdtime.
 7. The method of claim 1, wherein pairing the first contact to thefirst agent occurs at a fourth time after the third time.
 8. The methodof claim 1, wherein the first set of available contacts includes atleast two contacts, the second set of available contacts includes atleast two contacts, and the third set of available contacts includes atleast two contacts.
 9. The method of claim 1, wherein the second pairingprocess is different than the first pairing process, or the secondpairing process is the same as the first pairing process.
 10. The methodof claim 1, wherein performing the first pairing process comprisesimplementing a behavioral pairing strategy.
 11. A system, the systemcomprising: memory; and processing circuitry coupled to the memory,wherein the system is configured to: at a first time, obtain firstcontact center information, the first contact center information: i)identifying a first set of available agents that are available to bepaired with a contact and ii) identifying a first set of availablecontacts that are waiting to be paired with an available agent the firstset of available contacts comprising a first contact; after obtainingthe first contact center information, perform a first pairing process,in a switch of the contact center, using the first contact centerinformation; at a second time after performing the first pairingprocess, obtain second contact center information, the second contactcenter information: i) identifying a second set of available agents thatare available to be paired with a contact, the second set of availableagents comprising a first agent and ii) identifying a second set ofavailable contacts that are waiting to be paired with an availableagent, the second set of available contacts comprising the firstcontact; after obtaining the second contact center information, performa second pairing process, in the switch of the contact center, using thesecond contact center information, wherein the performance of the secondpairing process results in a pairing of the first contact with the firstagent; at a third time after performing the second pairing process,obtain third contact center information, the third contact centerinformation: i) identifying a third set of available agents that areavailable to be paired with a contact and ii) identifying a third set ofavailable contacts that are waiting to be paired with an availableagent; and after obtaining the third contact center information, performa third pairing process, in the switch of the contact center, using thethird contact center information, wherein the amount of time between thefirst time and the second time is: i) at least a predetermined thresholdamount of time, ii) not more than a predetermined maximum amount oftime, or iii) both, and the amount of time between the second time andthe third time is: i) at least the predetermined threshold amount oftime, ii) not more than the predetermined maximum amount of time, oriii) both.
 12. The system of claim 11, wherein the first set ofavailable agents comprises the first agent and.
 13. The system of claim11, wherein the second set of available contacts comprises the firstcontact and a second contact.
 14. The system of claim 11, wherein thefirst contact became available for pairing closer to the first time thanthe second time.
 15. The system of claim 11, wherein the predeterminedthreshold amount of time or the predetermined maximum amount of time isbased on an amount of choice available to a contact center system. 16.The system of claim 11, wherein pairing the first contact to the firstagent occurs at a fourth time between the second time and the thirdtime.
 17. The system of claim 11, wherein pairing the first contact tothe first agent occurs at a fourth time after the third time.
 18. Thesystem of claim 11, wherein the first set of available contacts includesat least two contacts, the second set of available contacts includes atleast two contacts, and the third set of available contacts includes atleast two contacts.
 19. The system of claim 11, wherein the secondpairing process is different than the first pairing process or thesecond pairing process is the same as the first pairing process, andperforming the first pairing process comprises implementing a behavioralpairing strategy.
 20. A computer program product comprising anon-transitory computer readable medium storing instructions which whenexecuted by processing circuitry of a system causes the system to: at afirst time, obtain first contact center information, the first contactcenter information: i) identifying a first set of available agents thatare available to be paired with a contact and ii) identifying a firstset of available contacts that are waiting to be paired with anavailable agent, the first set of available contacts comprising a firstcontact; after obtaining the first contact center information, perform afirst pairing process, in a switch of the contact center, using thefirst contact center information; at a second time after performing thefirst pairing process, obtain second contact center information, thesecond contact center information: i) identifying a second set ofavailable agents that are available to be paired with a contact, thesecond set of available agents comprising a first agent and ii)identifying a second set of available contacts that are waiting to bepaired with an available agent, the second set of available contactscomprising the first contact; after obtaining the second contact centerinformation, perform a second pairing process, in the switch of thecontact center, using the second contact center information, wherein theperformance of the second pairing process results in a pairing of thefirst contact with the first agent; at a third time after performing thesecond pairing process, obtain third contact center information, thethird contact center information: i) identifying a third set ofavailable agents that are available to be paired with a contact and ii)identifying a third set of available contacts that are waiting to bepaired with an available agent; and after obtaining the third contactcenter information, perform a third pairing process, in the switch ofthe contact center, using the third contact center information, whereinthe amount of time between the first time and the second time is: i) atleast a predetermined threshold amount of time, ii) not more than apredetermined maximum amount of time, or iii) both, and the amount oftime between the second time and the third time is: i) at least thepredetermined threshold amount of time, ii) not more than thepredetermined maximum amount of time, or iii) both.
 21. The computerprogram product of claim 20, wherein the first set of available agentscomprises the first agent.
 22. The computer program product of claim 20,wherein the second set of available contacts comprise the first contactand a second contact.
 23. The computer program product of claim 20,wherein at least one of the first contact center information and thesecond contact center information identifies an amount of choiceavailable to a contact center system.
 24. The computer program productof claim 20, wherein the predetermined threshold amount of time or thepredetermined maximum amount of time is based on an amount of choiceavailable to a contact center system.
 25. The computer program productof claim 20, wherein pairing the first contact to the first agent occursat a fourth time between the second time and the third time.
 26. Thecomputer program product of claim 20, wherein pairing the first contactto the first agent occurs at a fourth time after the third time.
 27. Thecomputer program product of claim 20, wherein the first contact becameavailable for pairing closer to the first time than the second time. 28.The computer program product of claim 20, wherein the first set ofavailable contacts includes at least two contacts, the second set ofavailable contacts includes at least two contacts, and the third set ofavailable contacts includes at least two contacts.
 29. The computerprogram product of claim 20, wherein the second pairing process isdifferent than the first pairing process or the second pairing processis the same as the first pairing process, and performing the firstpairing process comprises implementing a behavioral pairing strategy.30. A system comprising: memory; and processing circuitry coupled to thememory, wherein the system is configured to: store agent informationthat identifies a set of agent identifiers (IDs), each agent ID includedin the set of agent IDs being associated with a different availableagent; store contact information that identifies a set of contactidentifiers (IDs), each contact ID included in the set of contact IDsbeing associated with a different contact waiting to be connected withan available agent; perform a pairing process that uses the set of agentIDs and the set of client IDs to attempt to pair at least a firstwaiting contact with an available agent; after performing the pairingprocess, determine whether at least a threshold amount of time haselapsed since a point in time prior to the completion of the performanceof the pairing process; and as a result of determining that at least thethreshold amount of time has elapsed since the point in time, performthe pairing process again.
 31. The system of claim 30, wherein thesystem is further configured such that, if, as a result of the pairingprocess a particular contact is paired with a particular agent, then,prior to performing the paring process again, the system i) removes fromthe set of agent IDs the agent ID associated with the particular agentand ii) removes from the set of client IDs the client ID associated withthe particular client.
 32. The system of claim 30, wherein the pairingprocess comprises: selecting a contact ID from the set of contact IDs;and choosing one of the agent IDs based information associated with theselected contact ID.
 33. The system of claim 32, wherein the informationassociated with the selected contact ID is a numeric value, each agentID included in the set of agent IDs is associated with a numeric value,and choosing one of the agent IDs based on the numeric value associatedwith the selected contact ID comprises choosing, from among the set ofagent IDs, the agent ID having a numeric value that is the closest tothe numeric value associated with the contact ID.
 34. The system ofclaim 30, wherein the pairing process comprises: selecting an agent IDfrom the set of agent IDs; and choosing one of the contact IDs basedinformation associated with the selected agent ID.
 35. The system ofclaim 30, wherein performing the pairing process comprises implementinga behavioral pairing strategy.